Don't fail "ostree remote refs" if writing the summary cache is not permitted
authorAlexander Larsson <alexl@redhat.com>
Fri, 18 Mar 2016 09:00:58 +0000 (10:00 +0100)
committerAlexander Larsson <alexl@redhat.com>
Fri, 18 Mar 2016 16:33:39 +0000 (17:33 +0100)
It used to be allowed to run something like "ostree remote refs" on
a read-only (e.g. system) repo. However, the summary cache caused that to
break. This commit just makes it not save the cache if we get some kind
of permission error when writing it. It'll still work, even without the
cache.

https://bugzilla.gnome.org/show_bug.cgi?id=763855

src/libostree/ostree-repo.c

index 2d6db1ffa579c3694343bb3a40389ae987570ae5..2a0a2bc8f883d1f54107111b871dd8cc72092f52 100644 (file)
@@ -1818,13 +1818,23 @@ repo_remote_fetch_summary (OstreeRepo    *self,
 
   if (!from_cache && *out_summary && *out_signatures)
     {
+      g_autoptr(GError) temp_error = NULL;
+
       if (!_ostree_repo_cache_summary (self,
                                        name,
                                        *out_summary,
                                        *out_signatures,
                                        cancellable,
-                                       error))
-        goto out;
+                                       &temp_error))
+        {
+          if (g_error_matches (temp_error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED))
+            g_debug ("No permissions to save summary cache");
+          else
+            {
+              g_propagate_error (error, g_steal_pointer (&temp_error));
+              goto out;
+            }
+        }
     }
 
   ret = TRUE;